namespace NBody.Simulation
{
    using System;
    
    public delegate void DiagnosticEventHandler(object o, DiagnosticEventArgs args);
        
    public class DiagnosticEventArgs
    {
        int nsteps;
        double time;
        double e_kin;
        double e_pot;
        TimeSpan ts_step;
        TimeSpan ts_total;
        
        public DiagnosticEventArgs(int nsteps, double time, double e_kin, double e_pot, TimeSpan ts_step, TimeSpan ts_total)
        {
            this.nsteps = nsteps;
            this.time = time;
            this.e_kin = e_kin;
            this.e_pot = e_pot;
            this.ts_step = ts_step;
            this.ts_total = ts_total;
        }
        
        public int Nsteps
        {
            get { return nsteps; }
        }
        
        public double Time
        {
            get { return time; }
        }
        
        public double KineticEnergy
        {
            get { return e_kin; }
        }
        
        public double PotentialEnergy
        {
            get { return e_pot; }
        }
        
        public TimeSpan StepTime
        {
            get { return ts_step; }
        }
        
         public TimeSpan TotalTime
        {
            get { return ts_total; }
        }       
    }
}
